//全局变量
var a = 0;
void main() {
  //全局变量 会常驻内存 污染全局
  //局部变量 会被垃圾回收机制回收 不常驻内存 不会污染全局

  //闭包就是函数里面嵌套函数 使变量常驻内存 但不污染全局

  addA() {
    print(++a);
  }

  addA();
  addA();
  addA();

  fn() {
    //局部变量
    int num = 123;
    print(++num);
  }

  fn();
  fn();
  fn();

  //闭包
  fn1() {
    var num = 123;
    return () {
      print(++num);
    };
  }

  var f = fn1();
  f();
  f();
}
